package api

import (
	"context"
	"gdmin/servlet"
	"github.com/cloudwego/hertz/pkg/app"
	"github.com/cloudwego/hertz/pkg/route"
)

func UserBindApi(r *route.RouterGroup) {
	r.POST("/user/bind/dept", userBindDept)
	r.POST("/user/bind/role", userBindRole)
}

// 用户绑定角色
// @Tags      用户
// @Summary   用户绑定角色
// @Produce   application/json
// @Param     data  body      servlet.UserBindRoleReq             true  "创建参数"
// @Success   200   {object}  servlet.Resp{msg=string,data=model.RoleBindUser}  "成功"
// @Router    /user/bind/role [post]
func userBindRole(ctx context.Context, c *app.RequestContext) {
	var req servlet.UserBindRoleReq
	err := c.BindAndValidate(&req)
	if err != nil {
		servlet.FailWithMessage(err.Error(), c)
		return
	}

	err = userBindService.BindRole(&req)
	if err != nil {
		servlet.FailWithMessage(err.Error(), c)
		return
	}
	servlet.Ok(c)
	return
}

// 用户绑定部门
// @Tags      用户
// @Summary   用户绑定部门
// @Produce   application/json
// @Param     data  body      servlet.UserBindDeptReq             true  "创建参数"
// @Success   200   {object}  servlet.Resp{msg=string,data=model.DeptBindUser}  "成功"
// @Router    /user/bind/dept [post]
func userBindDept(ctx context.Context, c *app.RequestContext) {
	var req servlet.UserBindDeptReq
	err := c.BindAndValidate(&req)
	if err != nil {
		servlet.FailWithMessage(err.Error(), c)
		return
	}

	err = userBindService.BindDept(&req)
	if err != nil {
		servlet.FailWithMessage(err.Error(), c)

		return
	}
	servlet.Ok(c)
	return
}
